小白入门机器学习必备:编程语言环境介绍及搭建
导读:工欲善其事,必先利其器,机器学习也不例外。算法原理理解得再清楚,最终也需要通过编写代码来真正实现功能和解决问题。
本文将介绍当前机器学习主流的编程语言环境,当前机器学习使用最多的编程语言是Python,在业界口碑一直不错的Python语言借着机器学习的东风一下跻身编程语言热门榜的首位。
本文还将介绍Python语言下机器学习相关的支持库,包括科学计算支持库Numpy、机器学习库Scikit-Learn和数据处理库 Pandas。想要在实际工作中使用机器学习解决具体问题时,使用这些支持库将大大提升效率。
作者:莫凡
来源:大数据DT(ID:hzdashuju)
01 常用环境
一般来说,算法理论的实践方式有两种,一种是自己动手将算法用代码都实现一遍,另一种则是充分利用工具的便利性,快速了解掌握现有资源后,随即开始着手解决现实问题。
对于要不要重复造轮子的争论,我想是很难有决断的,两种方法各有利弊,这里我们选用第二种,这也贯彻了本文的宗旨:不是为了学习知识而制造知识,而是为了解决问题去学习知识。
机器学习经过这几年的高速发展,已经积累了非常丰富的开放资源,通过充分利用这些资源,哪怕此前你对这个领域不了解,也能快速掌握并着手解决实际问题。
首先是编程语言,我们选择Python。在前些年,Python和R语言在机器学习领域保持着双雄并立的局面,大致可以认为工业界偏爱Python而学术界偏爱R,但随着技术发展,特别是这几年深度学习所需的支持库毫无例外地都选择了用Python实现之后,Python语言已经成为机器学习领域毫无疑问的“老大”。
由于机器学习的火热,Python甚至拥有了与传统编程语言C和Java一较高下的底气,在多种编程语言排行榜上都大有后来居上的趋势。那么Python,决定就是你了!
接下来是支持库Numpy。机器学习涉及矩阵运算等大量数学运算,好在Python有两大特点,一是灵活,二是库多,Numpy就是Python中专门设计用于科学计算的专业支持库,在业界有口皆碑。不只是机器学习,其他科学领域譬如天体物理涉及的数学运算,要么直接使用Numpy,要么基于Numpy构建更高层的功能库。
最后是算法库Scikit-Learn。基于Python的机器学习算法库实际上有很多,每过一段时间就会冒出个“前五”“前十”这样的排行,但稳坐榜首的一直是Scikit-Learn。
它不但种类齐备,市面上见得到的机器学习算法基本上都能在此找到对应的API,简直是一家“机器学习算法超市”,而且封装良好、结构清晰,你可以通过简单几行代码就能完成一个复杂算法的调用,是机器学习领域入门的福音,更是进阶的法宝。
另外再加上一个Pandas数据处理库。它内置许多排序、统计之类的实用功能,属于“没它也不是不行,但有它会方便很多”的角色。业界实现机器学习,基本上都会用到Numpy、Scikit-Learn和Pandas这三件套。
02 Python简介
Python是一种动态的高级编程语言,与C和Java需要编译执行不同,Python代码是通过解释器解释执行,一个明显的区别是,Python的数据类型不用事先声明,语法更为灵活多变,代码看起来也更加简洁,用C和Java需要十行代码才能写明白的意思,可能用Python写一行就可以了。
高效快速是Python引以为傲的特点,Python社区甚至流传一句口号:“Life is short, I use Python.”
Python仍在不断迭代,而且并不向前兼容,这也导致当前Python分裂成两大版本分支,即Python 2.X和Python 3.X,虽然从语法上看还不至于成为两款语言,但二者代码是无法混用的,对于版本的选择也是开始学习使用Python时所要确定的第一件事。
之前一般认为,Python 2.X的发展时间更长,各方面的支持库更多且更成熟,不少人推荐从这个版本入手。但随着Python团队宣布将于2020年停止对Python 2.X的维护,各大社区都早已开始了从2.X向3.X迁移的工作,所以现在开始学Python的话更建议选择3.X。Python官网见图2-1。
▲图2-1 Python官网首页
1. Python的安装
Python具有很强的泛用性,支持Windows、Linux/UNIX、Mac OS X等主流操作系统平台,安装也很简单,可以通过
https://www.python.org/downloads
选择你使用的操作系统平台所对应的在线或离线安装包并进行安装。在安装包下载页面同时提供了多个版本的Python安装包,如果初次接触可能让你觉得难以选择。不过请放心,你也可以直接下载最新版本的Python安装包。
▲图2-2 Python下载页面
Python是一款开源编程语言,你也可以选择通过源代码进行编译安装。
2. Python的基本用法
Python是一款通用编程语言,语法满足图灵完备性,这里无法完全展开说明。
不过,如果你熟悉C或者Java语言,那么可以认为Python的语法就是它们的高度精简版,除了上面提到的不用进行类型声明外,Python还少了用来表示作用域的大括号以及语句结尾的分号,但同时,在Python中缩进不仅仅是代码规范,而是语法层面的强制要求。
如果你有语言基础,记住这些区别,应该就能很快熟练地使用Python。
这里仅对两项常用的Python工具进行说明,即Python库安装工具Pip和Conda。丰富的第三方支持库是Python功能强大的原因之一。在使用Python实现功能时,往往需要依赖第三方支持库,这些第三方库需要先安装再使用。安装方法是通过Pip或Conda工具,在命令行输入命令:
pip install 库名
或
conda 库名
进行联网下载并自动安装。
一般当你成功安装Python后,就能在命令行中直接使用Pip命令了,而Conda则可能需要额外进行安装才能够使用。Conda的功能更为强大,但如果你并不了解Python及相关背景知识,推荐通过Pip工具来下载安装第三方库。
在库的使用方面,Python也与其他编程语言一样,需要先导入再使用,语法是:
import 库名
import之后就能正常使用库的资源了。如果库名较长,还可以使用:
import 库名 as 别名
设定别名之后,通过别名也能够使用库的资源。
要使用库里的某个类,可以通过“库名.类名”的方法调用。如果认为这样写麻烦,或者导致单行语句太长,可以在导入时使用:
from 库名 import 类名
这样就可以在代码中直接使用类名了。
03 Numpy简介
Numpy是Python语言的科学计算支持库,提供了线性代数、傅里叶变换等非常有用的数学工具。Numpy是Python圈子里非常知名的基础库,即使你并不直接进行科学计算,但如图像处理等相关功能库,其底层实现仍需要数学工具进行支持,则需要首先安装Numpy库。Numpy官网见图2-3。
▲图2-3 Numpy官网首页
1. Numpy的安装
Numpy的安装很简单,使用Pip直接安装即可。命令如下:
pip install -U numpy
2. Numpy的基本用法
Numpy拥有强大的科学计算功能,也许刚一接触容易眼花缭乱,不知从何入手。不过不必担心,Array数据类型是Numpy的核心数据结构,与Python的List类型相似,但功能要强大得多。Numpy相关功能都是围绕着Array类型建设的,可以作为你了解Numpy的一条中心线索。
使用Numpy包很简单,只要用import导入即可。业界习惯在导入时使用“np”作为它的别名:
import numpy as np
导入后就可以使用了,常用功能如下。
array
数据创建
创建Array类型数据
zeros
数据创建
创建值为0的Array类型数据
ones
数据创建
创建值为1的Array类型数据
eye
数据创建
创建单位矩阵
arange
数据创建
类似内置函数range,生成等差数值
linspace
数据创建
生成可指定是否包含终值的等差数值
random.rand
数据创建
随机生成数值
T
数据操作
转置操作
reshape
数据操作
不改变原数据的维度变换
resize
数据操作
修改原数据的维度变换
mean
统计操作
取均值
sum
统计操作
求和
max
统计操作
取最大值
min
统计操作
取最小值
var
统计操作
求方差
std
统计操作
求标准差
corrcoef
统计操作
计算相关系数
append
数据操作
新增
insert
数据操作
插入
delete
数据操作
删除
concatenate
数据操作
按行(列)连接数据表
add
数学运算
标(向)量加法
subtract
数学运算
标(向)量减法
multiply
数学运算
标(向)量乘法
divide
数学运算
标(向)量除法
exp
数学运算
以e为底的指数运算
log
数学运算
以e为底的对数运算
dot
数学运算
点乘
04 Scikit-Learn简介
正如机器学习中推荐使用Python语言,用Python语言使用机器学习算法时,推荐使用Scikit-Learn工具。
或者应该反过来,现在机器学习推荐使用Python,正是因为Python拥有Scikit-Learn这样功能强大的支持包,它已经把底层的脏活、累活都默默完成了,让使用者能够将宝贵的注意力和精力集中在解决问题上,极大地提高了产出效率。Scikit-Learn官网见图2-4。
▲图2-4 Scikit-Learn官网首页
1. Scikit-Learn的安装
安装Scikit-Learn可以有两种方法。通过Pip安装,命令如下:
pip install -U scikit-learn
或通过 Conda安装,命令如下:
conda install scikit-learn
2. Scikit-Learn的基本用法
Scikit-Learn库包含了常见的机器学习算法,而且还在不断更新,常见机器学习算法都可以在Scikit-Learn库中找到,不妨将它当作机器学习算法的百科全书来使用。这里简要介绍它的用法。
使用Scikit-Learn包很简单,使用import导入即可,但须注意Scikit-Learn包的包名为sklearn:
import sklearn
调用机器学习算法也非常简单,Scikit-Learn库已经将算法按模型分类,查找起来非常方便。如线性回归算法可以从线性模型中找到,用法如下:
from sklearn import linear_model
model = linear_model.LinearRegression()
Logistic回归算法也是依据线性模型,同样也在其下:
from sklearn.linear_model import LogisticRegression
model =linear_model.LogisticRegression()
类似的还有基于近邻模型的KNN算法:
from sklearn.neighbors import NearestNeighbors
model =NearestNeighbors()
生成模型后,一般使用fit方法给模型“喂”数据及进行训练。完成训练的模型可以使用predict方法进行预测。
Scikit-Learn库对机器学习算法进行了高度封装,使用过程非常简单,只要根据格式填入数据即可,不涉及额外的数学运算操作,甚至可以说只要知道机器学习算法的名字和优劣,就能直接使用,非常便利。
05 Pandas简介
Pandas是Python语言中知名的数据处理库。数据是模型算法的燃料,也决定了算法能够达到的上限。一般在学习中接触的数据都十分规整,可以直接供模型使用。
但实际上,从生产环境中采集得到的“野生”数据则需要首先进行数据清洗工作,最常见的如填充丢失字段值。数据清洗工作一般使用Pandas来完成,特征工程也可通过Pandas完成。Pandas官网见图2-5。
▲图2-5 Pandas官网首页
1. Pandas的安装
安装Pandas可以有两种方法。通过Pip安装,命令如下:
pip install -U pandas
或通过 Conda安装,命令如下:
conda install pandas
2. Pandas的基本用法
Pandas针对数据处理的常用功能而设计,具有从不同格式的文件中读写数据的功能,使用Pandas进行一些统计操作特别便利。与Numpy类似,Pandas也有两个核心的数据类型,即Series和DataFrame。
Series:一维数据,可以认为是一个统计功能增强版的List类型。
DataFrame:多维数据,由多个Series组成,不妨认为是电子表格里的Sheet。
使用Pandas 包很简单,只要import导入即可。业界习惯在导入时使用“pd”作为它的别名:
import pandas as pd
导入后就可以使用了,其常用功能如下。
read_csv
读取数据
从CSV格式文件中读取数据
read_excel
读取数据
从电子表格中读取数据
read_json
读取数据
从json格式的文件中读取数据
read_clipboard
读取数据
从剪切板读取数据
to_csv
写入数据
将数据写入CSV格式文件
to_excel
写入数据
将数据写入电子表格
to_json
写入数据
将数据写入json格式文件
to_clipboard
写入数据
将数据写入剪切板
Series
写入数据
创建Series类型数据
DataFrame
写入数据
创建DataFrame类型数据
head
信息查看
从头开始查看N位数据
tail
信息查看
从末尾开始查看N位数据
shape
信息查看
行列数信息
dropna
数据操作
删除空值
fillna
数据操作
填充空值
sort_values
数据操作
正(逆)序排序
append
数据操作
横向(按行)连接两个数据表
concat
数据操作
纵向(按列)连接两个数据表
value_counts
统计操作
值计数
describe
统计操作
总体概况信息
info
统计操作
数值类型统计
mean
统计操作
取均值
corr
统计操作
计算相关系数
count
统计操作
非空值计数
max
统计操作
取最大值
min
统计操作
取最小值
median
统计操作
计算中位数
std
统计操作
计算标准差
关于作者:莫凡,新技术深度爱好者,曾经从事信息安全前沿技术跟踪研究和数据分析工作,在各类信息安全类技术期刊发表文章五十余篇,现转为投身高端知识“白菜化”项目,希望能让将更多听起来高大上的名词沾一沾“人间烟火”,成为日常生活中真正用得上的知识。
本文摘编自《机器学习算法的数学解析与Python实现》,经出版方授权发布。
延伸阅读
《机器学习算法的数学解析与Python实现》
有话要说👇
Q: 入门机器学习,你准备好了吗?
欢迎留言与大家分享
猜你想看👇
原来你也在看